Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

packSCMP Continued #373

Merged
merged 15 commits into from
Aug 15, 2024
Merged

packSCMP Continued #373

merged 15 commits into from
Aug 15, 2024

Conversation

mlimbeck
Copy link
Collaborator

No description provided.

router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/assumptions.gobra Outdated Show resolved Hide resolved
router/dataplane.go Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
Comment on lines +2919 to +2923
// (VerifiedSCION) Gobra is unable to verify permissions for `p.path.PathMeta.CurrINF`
// and `p.path.PathMeta.CurrHF` directly at the function call.
// To work around this limitation, these fields are first stored in temporary variables.
tmpCurrINF := p.path.PathMeta.CurrINF
tmpCurrHF := p.path.PathMeta.CurrHF
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still find this supper puzzling. Can you please remind me if you were using any kind of unfolding expression in the function call?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried all possible combinations of unfold and unfolding. As soon as the field access is directly a function argument, Gobra complains about missing permissions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you get this error even without any unfolds/unfoldings?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, even without Gobra complains about missing permissions.

router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
router/dataplane.go Outdated Show resolved Hide resolved
@jcp19
Copy link
Contributor

jcp19 commented Aug 13, 2024

After my comments are addressed, it should be ready to merge on the original SCMP branch

router/dataplane.go Outdated Show resolved Hide resolved
@jcp19 jcp19 merged commit d7bf52d into joao-uncomment-packSCMP Aug 15, 2024
3 of 4 checks passed
@jcp19 jcp19 deleted the markus-packscmp branch August 15, 2024 08:47
jcp19 added a commit that referenced this pull request Aug 29, 2024
* start

* make type-check

* backup

* fix syntax errors

* establish necessary precondition of DecodeFromBytes

* remove TODOs

* backup

* move on with proof obligations

* verify packSCMP; reinstate TODO()s for doing the proof step by step

* backup

* backup

* fix parse and type errors

* fix packscmp

* backup

* backup

* kill branches for now

* backup

* backup

* remove files pushed by mistake

* del file

* fix verification error

* change comment format

* backup

* reset changes to scion_spec.gobra

* continue making progress

* backup

* simplify spec

* backup

* non-termination again

* backup

* packSCMP Continued (#373)

* fix missing precondition for packSCMP

* progress scmp

* further progress

* further scmp fixes

* fix syntax error and strengthen spec of erros.Is function

* fix verification error

* fix verification errors in process()

* drop last scmp assumption

* fix verification errors in process()

* add missing postconditions to resolveInbound

* fix p.d permissions

* remove wrong precondition from validateEgressUp()

* clean up

* feedback

* Update router/dataplane.go

---------

Co-authored-by: João Pereira <[email protected]>

* Move ownership of underlying slice of `SerializableBuffer` to outside of `Mem()` (#374)

* fix missing precondition for packSCMP

* progress scmp

* further progress

* further scmp fixes

* fix syntax error and strengthen spec of erros.Is function

* fix verification error

* fix verification errors in process()

* drop last scmp assumption

* fix verification errors in process()

* add missing postconditions to resolveInbound

* fix p.d permissions

* save

* remove wrong precondition from validateEgressUp()

* clean up

* feedback

* change dependencies to new buffer approach

* remove buffWithFullPerm flag from scionPacketProcessor

* fix verification errors

* fix permission mistake

* Apply suggestions from code review

Co-authored-by: João Pereira <[email protected]>

* pass underlying buffer slice to prepareSCMP

* remove deep ownership of buffer slice in message

* fix verification error in run

* fix injectivity issue in run() and verification error in newPacketProcessor

* different trigger

* proves injectivity for message buffer directly without sets

* test: remove unnecessary invariants in run()

* improvements to injectivity lemma for messages

* introduce new lemma PermsImplyIneq()

* fixed missing preconditions

* minor fixes and feedback

* fix verification error

* fmt

---------

Co-authored-by: João Pereira <[email protected]>

---------

Co-authored-by: Markus Limbeck <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants